package com.ebupt.migu.music.schedule;

import com.ebupt.migu.music.schedule.service.StrategyCommonTaskService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

/**
 * Created by Intellij IDEA.
 * User:  liuyangyang@cd.ebupt.com
 * Date:  2019/10/27
 */
@Slf4j
@Component
@EnableScheduling
public class StrategyCommonTask {

    @Autowired
    private StrategyCommonTaskService strategyCommonTaskService;

    /**
     * 每日零点扫描策略表,修改策略执行状态：
     * 仅针对Banner策略和音乐之声
     * 2021-06-07 新增对弹窗策略的支持
     * 1.将今日需要执行的策略状态修改为进行中
     * 2.将今日需要执行的间隔策略标记为今日有效
     * 3.将今日不需要执行的间隔策略标记为今日无效
     * 4.将今日执行过并且今日为策略截至时间的策略状态修改为已结束
     */
//    @Scheduled(cron = "${cron.strategy_common}")
    @Scheduled(initialDelay = 5000, fixedDelay = 1000 * 60 * 5)
    public void updateStrategyExecuteStatus() {
        strategyCommonTaskService.updateStrategyExecuteStatus();
    }

    /**
     * 针对已暂停的策略
     * 策略类型包含定时、循环、间隔
     * 暂停状态的过程中，当前时间超过策略执行时间【定时】或者截止时间【循环、间隔】，将策略状态修改为结束
     */
    @Scheduled(cron = "${cron.strategy_common}")
    public void tac_overdue() {
        strategyCommonTaskService.tac_overdue();
    }


    /**
     * 针对已暂停的策略
     * 策略类型包含定时、循环、间隔
     * 暂停状态的过程中，当前时间超过策略执行时间【定时】或者截止时间【循环、间隔】，将策略状态修改为结束
     */
    @Scheduled(cron = "${cron.strategy_common}")
    public void error_report() {
        strategyCommonTaskService.send_message();
    }
}
